package com.ias.redis.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;

import java.util.HashMap;
import java.util.Map;

@ConfigurationProperties(prefix = "cache.l1cache")
@Data
public class CacheRedisProperties {

    /**
     * 是否存储空值，默认true，防止缓存穿透
     */
    private boolean cacheNullValues = true;

    /**
     * 是否动态根据cacheName创建Cache的实现，默认true
     */
    private boolean dynamic = true;

    /**
     * RedisCache 日志中是否输出value
     */
    private boolean logShowValue = true;

    /**
     * 缓存key的前缀
     */
    private String cachePrefix = "l1cache";

    private Redis redis = new Redis();

    @Data
    public static class Redis {

        /**
         * 全局过期时间，单位秒，默认不过期
         */
        private long defaultExpiration = 3600;

        /**
         * 每个cacheName的过期时间，单位秒，优先级比defaultExpiration高
         */
        private Map<String, Long> expires = new HashMap<>();

        public Redis() {
            // 初始化默认过期时间
            expires.put("cache:1m", 60L);
            expires.put("cache:5m", 300L);
            expires.put("cache:15m", 900L);
            expires.put("cache:60m", 3600L);
            expires.put("cache:12h", 43200L);
            expires.put("cache:24h", 86400L);
            expires.put("cache:permanent", -1L);
        }
    }
} 